package org.colafries.metadata.query;

/**
 * @author colafries
 * @version v1.0
 * @ClassName DBQuery
 * @Description
 * @date Created in 2024/3/20
 **/
public interface DBQuery {
    /**
     * 所有数据库信息查询 SQL
     */
    String schemaAllSql();
    /**
     * 数据库、模式、组织名称
     */
    String schemaName();
    /**
     * 表信息查询 SQL
     */
    String tablesSql(String schemaName);
    /**
     * 表字段信息查询 SQL
     */
    String columnsSql(String schemaName, String tableName);
    /**
     * 表名称
     */
    String tableName();
    /**
     * 字段名称
     */
    String columnName();
    /***
     * 字段类型
     * @return java.lang.String
     * @author colafries
     * @Date 2024/3/25
     */
    String columnType();

    /**
     * 精度
     * @return java.lang.String
     * @author colafries
     * @Date 2024/3/25
     */
    String precision();

    /**
     *字段注释
     * @param null
     * @return
     * @author colafries
     * @Date 2024/3/25
     */
    String columnComment();

    /**
     * 主键字段
     * @return java.lang.String
     * @author colafries
     * @Date 2024/4/3
     */
    String columnKey();
    /**
     * 主键值
     * @return java.lang.String
     * @author colafries
     * @Date 2024/4/3
     */
    String isPK();

    /**
     * 字段长度
     * @return java.lang.String
     * @author colafries
     * @Date 2024/4/3
     */
    String columnLength();

    /**
     * 是否允许为 NULL
     * @return java.lang.String
     * @author colafries
     * @Date 2024/4/3
     */
    String isNullable();

    /**
     * 允许为空的值
     * @return java.lang.String
     * @author colafries
     * @Date 2024/4/3
     */
    String nullableValue();

    /** @return 字符集名称 */
    String characterSet();

    /** @return 排序规则 */
    String collation();

    /** 字段序号 */
    String columnPosition();

    /** @return 小数范围 */
    String scale();

    /** 默认值 */
    String defaultValue();
    /** 主键自增 */
    String autoIncrement();
}
